﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using _63MyBmob;
namespace _64访问修饰符
{
    //修饰类 只有两个访问修饰符 public,internal(默认)
    internal class Program
    {
        private static void Main(string[] args)
        {
            AAA aaa = new AAA();
            aaa.x = 5;
            aaa.HelloWorld();

            MyClass mc = new MyClass();
            //可以访问x,w
        }
    }

    internal class MyClass
    {
        public int x;//公开的  哪儿都能访问
        private int y;//私有的 只能再本类内部访问  类成员的默认访问修饰符
        protected int z;//受保护的 只能再本类或子类内部访问
        internal int w;//程序集内部的 出程序集不能访问,程序集内和public一样
        private void Fun()
        {
            //都可以访问   x,y,z,w
        }
    }
    internal class A : MyClass
    {
        private void Test()
        {
            // 可以访问  x,z,w
        }
    }

    internal class CCC : AAA
    {
        private void Test()
        {
            this.z = 20;//protected internal 再程序集外,需要写个子类才能再子类中访问
        }
    }
}

/*修饰符   访问修饰符:public,private,protected,internal,internal protected
               静态修饰符:static
               继承修饰符(修饰方法,或者属性):virtual,override,abstract,sealed

    */